// 如果这么去定义对象，会显得特别的不专业，这些属性是什么类型无法知道
let obj:object = {
  a: 1,
  b: 2
}

// 正常定义对象的数据类型，如果对象中的属性特别多
let obj2: {
  a: number;
  b: string;
} = {
  a: 1,
  b: '字符串'
}

// 接口：所谓的接口其实就是用来给对象内的属性添加类型用的
/*
  接口的写法，内部是用来说明该对象的每个字段的数据类型,定义的关键字 interface
  多个属性之间我们可以使用 , 或者 ; 来进行分割,如果你不知道或者记不清再或者你
  就是不想写，那么你也可以干脆就不写了
  如果有些属性是不确定有还是没有的，我们就可以添加一个 ? 来设置为可选属性
  对于不确定其类型的属性而言，我们可以将其设置为 any 类型，any 是任意类型的意思
*/
interface iObj {
  a: number
  b: string
  c?: string
  d: any
}

let obj3: iObj = {
  a: 1,
  b: '字符串',
  c: '哈哈哈哈',
  d: 'zfc'
}
let obj4: iObj = {
  a: 1,
  b: '字符串',
  d: 1
}

console.log(obj3.b);

// 接口：接口就是为对象内部的属性定义类型用的
// 接口是为对象的数据类型而设计的一种类型注解的方式

// 如果是一个数组那么我们又该如何添加类型呢？
let list = [1,2,3,4,5,'字符串']
